package br.com.vestibulation.dao;

import br.com.vestibulation.bean.Pessoa;
import java.util.ArrayList;

public class AdminDAO extends ConnectionFactory{
    
    public boolean procurarAdmin(String nome){
        boolean existe = false;
        try{
            if(abrir()){
                stmt = conn.prepareStatement("SELECT * FROM Login WHERE usuario = ?");
                stmt.setString(1, nome.toLowerCase());
                rs = stmt.executeQuery();
                if(rs.next()){
                    existe = true;
                }
            }
        } catch(Exception ex){
        } finally{
            fechar();
        }
        return existe;
    }
    
    public boolean cadastrarAdmin(Pessoa pessoa){
        boolean sucesso = false;
        try {
            if(abrir()){
                stmt = conn.prepareStatement("INSERT INTO Login (usuario, senha, isAdmin) VALUES (?, ?, ?)");
                stmt.setString(1, pessoa.getUsuario().toLowerCase());
                stmt.setString(2, pessoa.getSenha());
                stmt.setInt(3, 1);
                stmt.executeUpdate();
                sucesso = true;
            }
        } catch (Exception ex) {
        } finally{
            fechar();
        }
        return sucesso;
    }
    
    public ArrayList<Pessoa> listarAdmins(){
        ArrayList<Pessoa> lista = new ArrayList<Pessoa>();
        try {
            if(abrir()){
                stmt = conn.prepareStatement("SELECT * FROM login WHERE isAdmin = 1");
                rs = stmt.executeQuery();
                while(rs.next()){
                    Pessoa pessoa = new Pessoa();
                    pessoa.setUsuario(rs.getString(1));
                    pessoa.setSenha(rs.getString(2));
                    pessoa.setAdmin(1);
                    lista.add(pessoa);
                }
            }
        } catch (Exception ex) {
        } finally{
            fechar();
        }
        return lista;
    }
    
    public boolean updateAdmin(Pessoa pessoa, String antigoUsername){
        boolean sucesso = false;
        try{
            if(abrir()){
                stmt = conn.prepareStatement("UPDATE login SET usuario = ?, senha = ? WHERE usuario = ?");
                stmt.setString(1, pessoa.getUsuario().toLowerCase());
                stmt.setString(2, pessoa.getSenha());
                stmt.setString(3, antigoUsername);
                stmt.executeUpdate();
                sucesso = true;
            }
        } catch(Exception ex){
        } finally{
            fechar();
        }
        return sucesso;
    }
    
    public void excluirAdmin(String usuario){
        try {
            if(abrir()){
                stmt = conn.prepareStatement("DELETE FROM login WHERE usuario = ?");
                stmt.setString(1, usuario);
                stmt.executeUpdate();
            }
        } catch (Exception ex) {
        } finally{
            fechar();
        }
    }
    
}